﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Data;
using System.Text.RegularExpressions;
public partial class ControlUser_DatHangOnline : System.Web.UI.UserControl
{
    clsObj Obj;
    clsSql Sql = new clsSql();
    DataTable DT = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            fload_ThongTinBA();
            fload_ThongTinChungTu();
            Session["DT"] = null;
            fload_OnlineOrderDetail();

        }
    }

    void fload_ThongTinBA()
    {
        Obj = new clsObj();
        Obj.Parameter = new string[] { "@saleSpKey" };
        Obj.ValueParameter = new object[] {"00031" }; //Session["username"].ToString()
        Obj.SpName = "ls_getBAInfor4OnOr";
        Sql.fGetData(Obj);
        if (Obj.Dt.Rows.Count > 0)
        {
            txtMaBA.Text = Session["Salesp_key_Logon"].ToString();
            txtTenBA.Text = Obj.Dt.Rows[0]["salesp_name"].ToString();
        }
        else
        {
            uscMsgBox1.AddMessage("Không tồn tại BA này", uscMsgBox.enmMessageType.Error);
           
        }
    }

    void fload_ThongTinChungTu()
    {
        //Session["username"].ToString()          //Session["username"].ToString()  

        Obj = new clsObj();
        Obj.Parameter = new string[] { "@saleSpKey" };
        Obj.ValueParameter = new object[] {"00031"  };
        Obj.SpName = "ls_getOnOrNo";
        Sql.fGetData(Obj);
        if (Obj.Dt.Rows.Count > 0)
        {

            ddlSoChungTu.DataSource = Obj.Dt;
            ddlSoChungTu.DataTextField = "tranno";
            ddlSoChungTu.DataValueField = "tranno";
            ddlSoChungTu.DataBind();
        }
       
    }

    void fload_OnlineOrderDetail()
    {
        
        Obj = new clsObj();
        Obj.Parameter = new string[] { "@tranNo" };
        Obj.ValueParameter = new object[] { ddlSoChungTu.SelectedValue.ToString() };
        Obj.SpName = "ls_getOnOrDetail";
        Sql.fGetData(Obj);

        if (Session["DT"] == null)
        {
           
            gvChiTietDonHang.DataSource = Obj.Dt;
            gvChiTietDonHang.DataBind();
            Session["DT"] = Obj.Dt;
        }
        else
        {
            gvChiTietDonHang.DataSource = (DataTable)Session["DT"];
            gvChiTietDonHang.DataBind();

        }
             
        
        

    }
    protected void ddlSoChungTu_SelectedIndexChanged(object sender, EventArgs e)
    {
        fload_OnlineOrderDetail();
    }
    public bool fBool(object value)
    {
        if (value.ToString() == "1")
        {
            return true;
        }
        else
        {
            return false;
        }
       
    }
     void tinhgia(DataTable dt)
    {
        double thanhtien = 0;
        double thanhtien1 = 0;
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            if (dt.Rows[i]["price"].ToString() == "1")
            {
                thanhtien = thanhtien1 + (0) * double.Parse(dt.Rows[i]["shipqty"].ToString() == "" ? "0" : dt.Rows[i]["shipqty"].ToString());
                thanhtien1 = thanhtien;
            }
            else
            {
            thanhtien = thanhtien1 + (double.Parse(dt.Rows[i]["price"].ToString()) * double.Parse(dt.Rows[i]["shipqty"].ToString() == "" ? "0" : dt.Rows[i]["shipqty"].ToString()));
            thanhtien1 = thanhtien;
            }
           
            
        }
        txtTongTien.Text = string.Format("{0:n}", thanhtien);

    }
    protected void txtSoLuongEdit_TextChanged(object sender, EventArgs e)
    {
        try
        {
           
            int row_index = (int)Session["RowEditIndexCTDH"];
            RowUpdating(row_index);
        
           
        }
        catch (Exception ex)
        {
            
        }

    }

    protected void ChkSoLuongEdit_TextChanged(object sender, EventArgs e)
    {
        try
        {
           
            int row_index = (int)Session["RowEditIndexCTDH"];
            RowUpdating(row_index);
        
           
        }
        catch (Exception ex)
        {
            
        }

    }
    protected void gvChiTietDonHang_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        RowUpdating(e.RowIndex);

    }

    private void RowUpdating( int index)
    {
        TextBox itemkey = (TextBox)gvChiTietDonHang.Rows[index].FindControl("txtTenHangEdit11");//itemkey
        TextBox description = (TextBox)gvChiTietDonHang.Rows[index].FindControl("txtTenHangEdit"); //description
        TextBox price = (TextBox)gvChiTietDonHang.Rows[index].FindControl("txtDonGiagEdit"); //price
        TextBox shipqty = (TextBox)gvChiTietDonHang.Rows[index].FindControl("txtSoLuongEdit");//shipqty
        CheckBox KM = (CheckBox)gvChiTietDonHang.Rows[index].FindControl("ChkSoLuongEdit");//KM
         DT = (DataTable)Session["DT"];

         if (shipqty.Text.Substring(0, 1).Equals("0"))
         {
             uscMsgBox1.AddMessage("Bạn phải nhập số vào ô này và số phải lớn hơn 0 và không được để số 0 ở đầu.", uscMsgBox.enmMessageType.Error);
             shipqty.Focus();
             return;
         }

         Match MyRegMatch = Regex.Match(shipqty.Text, @"\d+$");
         if (!MyRegMatch.Success)
         {
             uscMsgBox1.AddMessage("Bạn phải nhập số vào ô này và số phải lớn hơn 0 và không được để số 0 ở đầu.", uscMsgBox.enmMessageType.Error);
             shipqty.Focus();
             return;
         }
         else if (int.Parse(shipqty.Text) < 1)
         {
             uscMsgBox1.AddMessage("Bạn phải nhập số vào ô này và số phải lớn hơn 0 và không được để số 0 ở đầu.", uscMsgBox.enmMessageType.Error);
             shipqty.Focus();
             return;
         }
        DT.Rows[index]["itemkey"] = itemkey.Text;
        DT.Rows[index]["description"] = description.Text;
        DT.Rows[index]["price"] = double.Parse(price.Text);
        DT.Rows[index]["shipqty"] = shipqty.Text;
        DT.Rows[index]["KM"] = KM.Checked;
        Session["DT"] = DT;
    
        gvChiTietDonHang.EditIndex = -1;
        Session["RowEditIndexCTDH"] = -1;
        fload_OnlineOrderDetail();
        tinhgia((DataTable) Session["DT"]);
        #region Thêm mới
      
        //  ltloi4.Text = "<font color='blue'>Đã thêm thành công.</font>";
      


        //  fLoadLuoiHoaChatNguon(txtMamaunguon.Text);

     

        #endregion
    }
    protected void gvChiTietDonHang_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvChiTietDonHang.EditIndex = e.NewEditIndex;
        Session["RowEditIndexCTDH"] = e.NewEditIndex;
        fload_OnlineOrderDetail();
    }


    protected void gvChiTietDonHang_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {

        gvChiTietDonHang.EditIndex = -1;
        Session["RowEditIndexCTDH"] = -1;
        fload_OnlineOrderDetail();

    }
    protected void btnSave_Click(object sender, ImageClickEventArgs e)
    {
        uscMsgBox1.AddMessage("test", uscMsgBox.enmMessageType.Error);
         string dt = "";
 //       ALTER  proc [dbo].[ls_saveOnOrHeader]

 //@tranno varchar(15),
 //@salesp_key varchar(20),
 //@doctot float

        clsObj Obj1 = new clsObj();
        Obj1.Parameter = new string[] { "@tranNo" };
        Obj1.ValueParameter = new object[] { ddlSoChungTu.SelectedValue.ToString() };
        Obj1.SpName = "ls_delOnOr";
        Sql.fGetData(Obj1);

        //// sua thanh "sales person  key '

       clsObj Obj = new clsObj();
        Obj.Parameter = new string[] { "@tranNo" ,"@salesp_key","@doctot"};
        Obj.ValueParameter = new object[] { ddlSoChungTu.SelectedValue.ToString(),Session["username"].ToString(),double.Parse(txtTongTien.Text) };
        Obj.SpName = "ls_saveOnOrMaster";
        Sql.fGetData(Obj);
        if (Obj.Dt.Rows.Count > 0)
        {
           dt = Obj.Dt.Rows[0]["Tranno"].ToString();
        }

        if (Obj.Dt.Rows.Count > 0)
        {
        DT = (DataTable)Session["DT"];
          
           
            for (int i = 0; i < DT.Rows.Count; i++)
            {
                clsObj Obj2 = new clsObj();
                if (double.Parse(DT.Rows[i]["shipqty"].ToString() == "" ? "0" : DT.Rows[i]["shipqty"].ToString()) > 0)
                {
                    Obj2.Parameter = new string[] { "@tranno", "@itemkey", "@description", "@shipqty", "@unitprice", "@isPro" };
                    Obj2.ValueParameter = new object[] { dt,DT.Rows[i]["itemkey"].ToString(), 
                    DT.Rows[i]["description"].ToString(),  DT.Rows[i]["shipqty"].ToString(),
                     DT.Rows[i]["price"].ToString(),fBool( DT.Rows[i]["km"].ToString())};
                    Obj2.SpName = "ls_saveOnOrDetail";
                    Sql.fGetData(Obj2);
                }
            }

        }

          clsObj Obj3 = new clsObj();
        Obj3.Parameter = new string[] { "@tranNo" };
        Obj3.ValueParameter = new object[] {dt };
        Obj3.SpName = "ls_saveOnOrMaster";
        Sql.fGetData(Obj3);
       


    }
}
